Перейти к основному содержимому

5.11. Встроенные функции в Ruby

Разработчику Архитектору

Встроенные функции в Ruby

Ruby предоставляет набор методов верхнего уровня через модуль Kernel, включённый в класс Object. Эти методы доступны в любой точке программы без явного указания получателя. Справочник охватывает ключевые методы, часто используемые как встроенные функции.

Ввод и вывод

МетодНазначениеПример
putsВыводит аргументы с добавлением символа новой строки после каждогоputs "Привет", "Мир"
printВыводит аргументы без добавления символов новой строкиprint "Загрузка..."
getsСчитывает строку из стандартного ввода до символа новой строкиname = gets.chomp
putcВыводит один символ по его коду ASCII или объекту символаputc 65
printfФорматированный вывод по шаблону, аналогичный Cprintf "Цена: %.2f руб.", 19.99
sprintfВозвращает отформатированную строку без выводаtext = sprintf "%04d", 7

Управление выполнением программы

МетодНазначениеПример
exitЗавершает программу с указанным кодом возвратаexit 0
abortЗавершает программу с сообщением об ошибке в stderrabort "Файл не найден"
raiseГенерирует исключение указанного типаraise ArgumentError, "Неверный параметр"
failСиноним метода raisefail "Ошибка подключения"
sleepПриостанавливает выполнение на заданное количество секундsleep 2.5
loopБесконечный цикл, прерываемый через breakloop { break if ready? }
callerВозвращает массив строк с информацией о стеке вызововputs caller.first

Создание объектов и преобразование типов

МетодНазначениеПример
ArrayПреобразует аргумент в массивArray(1) #=> [1]
HashПреобразует аргумент в хэшHash([[:a, 1]]) #=> {:a=>1}
StringПреобразует аргумент в строку через to_sString(42) #=> "42"
IntegerПреобразует аргумент в целое числоInteger("100") #=> 100
FloatПреобразует аргумент в число с плавающей точкойFloat("3.14") #=> 3.14
ComplexСоздаёт комплексное числоComplex(1, 2) #=> (1+2i)
RationalСоздаёт рациональное числоRational(2, 3) #=> (2/3)
procСоздаёт объект Proc из блокаp = proc { |x| x * 2 }
lambdaСоздаёт лямбда-функцию с строгой проверкой аргументовl = lambda { |x| x + 1 }

Проверка объектов

МетодНазначениеПример
nil?Проверяет, является ли объект nilvalue.nil?
defined?Проверяет существование имени или выраженияdefined?(x)
respond_to?Проверяет, поддерживает ли объект указанный методobj.respond_to?(:save)
instance_of?Проверяет точное совпадение класса объектаobj.instance_of?(String)
is_a?Проверяет принадлежность объекта к классу или его предкамobj.is_a?(Enumerable)
kind_of?Синоним метода is_a?obj.kind_of?(Array)

Работа с переменными и объектами

МетодНазначениеПример
object_idВозвращает уникальный идентификатор объекта:symbol.object_id
cloneСоздаёт неполную копию объектаcopy = original.clone
dupСоздаёт поверхностную копию объектаcopy = original.dup
freezeДелает объект неизменяемымstr.freeze
frozen?Проверяет, является ли объект неизменяемымstr.frozen?
sendВызывает метод по имени, переданному как символ или строкаobj.send(:method_name, arg)
public_sendБезопасный вариант send, вызывающий только публичные методыobj.public_send(:info)
methodВозвращает объект Method для последующего вызоваm = obj.method(:size); m.call

Отладка и интроспекция

МетодНазначениеПример
pВыводит объект через inspect для отладкиp [1, 2, 3]
ppКрасиво форматированный вывод сложных структур (требует require 'pp')pp hash
warnВыводит предупреждение в stderrwarn "Устаревший метод"
caller_locationsВозвращает массив объектов Thread::Backtrace::Locationcaller_locations(1, 3)
bindingВозвращает объект привязки текущего контекстаeval("x + 1", binding)

Работа с окружением

МетодНазначениеПример
ENVХэш-подобный доступ к переменным окруженияENV["HOME"]
Dir.pwdВозвращает текущую рабочую директориюDir.pwd
Dir.chdirИзменяет текущую рабочую директориюDir.chdir("/tmp")
ARGVМассив аргументов командной строкиARGV[0]
RUBY_VERSIONСтрока с версией интерпретатора RubyRUBY_VERSION
RUBY_PLATFORMСтрока с информацией о платформеRUBY_PLATFORM

Методы коллекций верхнего уровня

МетодНазначениеПример
Array#empty?Проверяет, пуст ли массив[].empty? #=> true
Hash#empty?Проверяет, пуст ли хэш{}.empty? #=> true
String#empty?Проверяет, пуста ли строка"".empty? #=> true
Array#sizeВозвращает количество элементов массива[1, 2, 3].size #=> 3
Array#lengthСиноним метода size для массивов[1, 2].length #=> 2
Array#include?Проверяет наличие элемента в массиве[1, 2, 3].include?(2) #=> true